<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// 一.三种状态: pendding 、fufilled 、rejected
			// 状态模式；状态机；
			
			// let p = new Promise((resolve,reject)=>{
			// 	// resolve("success11");
			// 	reject("error");
			// })
			
			// // 1.pendding：等待状态；  PromiseResult 是 undefined 
			// // console.log(p);  // pendding
			
			// // 2.resolved 或者 fufilled  ： 成功状态；PromiseResult：可以通过参数来设置；
			// // 需要在回调里调用 resolve方法 ，那么就可以得到一个成功状态的promise对象；
			// // console.log(p);
			
			// // 3.rejected:失败状态   PromiseResult：也可以通过 参数设置 
			
			// console.log(p);
			
			
			
			
			// 二、每个promise对象 都会有一个then方法；then方法里会有2种回调 1.onResolved（成功的回调函数）  2.onRejected（失败的回调函数）;
			// let p = new Promise((resolve,reject)=>{
			// 	// resolve("success");
			// 	// reject("错误");
			// })
			// // promise对象会有三种状态 ：1.pendding 状态（then里的回调没有执行）  2.fufilled状态 3，rejected状态
			// p.then((res)=>{
			// 	console.log("onResolved",res);
			// },(err)=>{
			// 	console.log("onRejected",err);
			// })
			
			
			// 三 、promise里then的三种返还值；
			// let p = new Promise((resolve,reject)=>{
			// 		resolve("success");
			// });
			
			// 1.then里没有返还值；
			// let thensReturn =  p.then(res=>{
				
			// })
			
			
			// console.log(thensReturn);
			
			// 2.then里有返还值；会返还一个 promise对象 且结果值是返还的值；
			// let thensReturn =  p.then(res=>{
			// 		return 123;
			// })
			
			// console.log(thensReturn);
			
			//  2.then里有返还一个promise对象: 返还的promise对象 会原封不动的返还
			// let thensReturn =  p.then(res=>{
			// 		return new Promise(res=>{
			// 			res("返还的promise对象");
			// 		});
			// })
			// console.log(thensReturn)
			
			
			// 总结 ：无论promise里的then如何返还 ，都可以得到一个promise对象
			
			
			let p = new Promise((res,rej)=>{
				res("success");
			})
			let p2 = p.then(res=>{
				console.log(res);  // success;
				return 123
			})
			let p3 =  p2.then(res=>{
				console.log(res); // 123
				return 456;
			})
			// 无限then的链式操作
			p3.then(res=>{
				console.log(res); // 456;
			});
			
			
		</script>
	</body>
</html>
